競技プログラミング講習/AtCoderとは
概要
AtCoderは競技プログラミングのサイトで、定期的にコンテストを開催しています。
重要語
AtCoder
競技プログラミングのサイト
必要語
今回の必要語はありません。
登録方法
それでは、AtCoderへの登録方法を見ていきましょう。なお、AtCoderのサイトのスクリーンショットを掲載していますが、その文章や画像などについての一切の権利は、AtCoder又は当該権利を有する第三者に帰属しています。
Step1
AtCoderにアクセスしたら、画面右上の「新規登録」をクリックしてください。
Step2
必須事項を入力してください。ユーザー名で「このユーザ名はすでに使用されています」と出ることがありますが、その場合は別の名前に変更してください。入力し終わったら、画面下の青い「新規登録」ボタンを押してください。これで、AtCoderへの登録は完了です。
コンテストへの参加方法
AtCoderには定期的に開催されている4種類のコンテストがあり、それぞれ
- AtCoder Beginner Contest(ABC)
- AtCoder Regular Contest(ARC)
- AtCoder Grand Contest(AGC)
- AtCoder Heuristic Contest(AHC)
です。このうち、ABCがほぼ週に1回の頻度で開催されており、比較的易しい問題も出題されますので、
まずはABCから参加することをおすすめします。
それでは、コンテストへの参加方法を見ていきましょう。
コンテストページ
AtCoderの左側に、「予定されたコンテスト」というところがあります。
ここに近々開催されるコンテストの日時と名称が記載されています。
画像の例だと、ABC230が12/3(金)の21:00から開催される予定です。この回は変則的に金曜日にコンテストがありますが、基本的には土曜日か日曜日のどちらかにあることが多いです。
コンテストの詳細はコンテスト名をクリックするとコンテストページに飛ぶのでそこを見るとわかります。
ABC230はコンテスト時間100分、問題がA~Hの8問あって、配点は100-200-300-400-500-500-600-600だとわかります。
最近のABCはいつもこのような構成です。
参加登録
では、詳細が確認できたところで、参加登録をしていきます。
コンテストページ中央に「参加登録」という青いボタンがあるので、そこをクリックしてください。
クリックすると画面上部に「参加登録しました。」と出ますが、まだ参加登録は完全に完了していません。このあとの操作をもって、参加登録が完全に完了します。
また、このとき企業コンテストなどの一部コンテストでは、アンケートがある場合もあります。
コンテスト開始直前
参加登録が一時的に完了すると、画像のように「Rated参加登録」という青いボタンと「Unrated参加登録」という白いボタンが表示されます。
「Rated参加登録」を押すと、このコンテストの結果がレートに反映されます。「Unrated参加登録」を押すと、このコンテストの結果がレートに反映されません。
どちらかのボタンを押すと、「現在~で参加登録しています」と表示されます。
また、コンテスト開始5分以内にこの選択をしないと、Unratedとなるので注意してください。
この選択はコンテスト直前でなくても行うことはできますが、Ratedを選択したにもかかわらず寝坊などの何らか理由で参加できなくなった場合に、「参加したが1問も解けなかった」という扱いになってしまいレートが大幅に減少する可能性があるため、コンテスト直前の選択をお勧めします。
このRated/Unrated登録機能についての詳細は、ボタンの下にも表示されている通りRated/Unrated登録機能追加のお知らせを見てください。
コンテスト本番
できるだけ多くの問題を解くことを目標にしましょう。
同じ問題を解いた人でも、早く解いた人のほうが順位が高いため、早く解けるとなおよいです。
例えば、
- X:A問題とB問題とC問題を50分で解いた
- Y:A問題とB問題を5分で解いた
- Z:A問題とB問題を10分で解いた
となった場合、3人の順位は高い方からX、Y、Zとなります。
開始
開催時間になるとポップアップが出現し、「問題一覧ページへ移動」をクリックすると6問の問題名が並んでいます。
この問題名をクリックすると、それぞれの問題文が表示されます。
基本的にはA問題が最も易しく、徐々に難しくなっていき、H問題が最も難しくなっています。
そのため、A問題から順に解いていくことをお勧めします。
しかし、たまに難易度が入れ替わることもあるので、順位表を確認して何人解いているかを参考にするといいかもしれません。
提出
問題文を読んで内容が把握出来たらVSCodeやAtom、メモ帳などのお好きなエディタで正解だと思うコードを書きましょう。
コードが書けたら、まずはサンプルを試しましょう。実行して試し、出力例と一致しているか確かめましょう。
一致していなければ何が間違っているはずなので、バグを取りましょう。
「コードテスト」のタブからもテストすることができますが、コンテスト中は大量のコードをジャッジしているので、結果が返ってくるのが少し遅いことがあります。
正解だという自信があれば提出しましょう。コードをCtrl+A、Ctrl+Cでコピーしたら、問題ページ下の「ソースコード」欄にCtrl+Vで貼り付けます。
言語がC++(GCC 9.2.1)
になっているのを確認したら、下の「提出」ボタンで提出できます。
ジャッジ
提出をすると、これまでにこのコンテストで提出したコードの一覧が表示されます。
「結果」とあるのがジャッジの結果で、提出直後は灰色で「WJ」と表示されていますが、しばらくするとこれが変わります。
緑色で「AC」と表示されていれば正解で、この問題に対する得点を得ることができます。
正解したら、次の問題に取り組みましょう(ただし、正解しなければ次の問題に進めないというルールはないので、どの順番で解いても構いません)。
しかし、黄色で「WA」や「TLE」などと表示されていれば不正解です。もう一度コードを見直し、バグを取りましょう。
そのほかのステータスや詳細については提出結果の見方を見てください。
終了
終了時間になるとポップアップが出現し、コンテストが終了した旨を伝えてくれます。
順位表で、最終的に自分が何位であったかを確認できます。
また、終了後しばらくすると「解説」タブができ、記事や動画で解説を見ることができます。
「公式解説」とあるのが公式が出した解説ですが、問題ごとに「ユーザ解説」がある場合があります。
これは、Rated上限を超えたユーザーが投稿したもので、別解やより詳しい解説などが書いてあります。
解説を見ることで、解けなかったところや解けたところでもシンプルな解法がわかったりするので、ためになると思います。
さらに、Rated対象であればレートが更新されます。ABCはレート1999以下の人が対象です。
Rated対象はコンテストページに書いてあります。
練習問題
提出の練習としてpractice
contestのA問題Welcome to AtCoderをやってみましょう。
B問題はかなり難しい問題なのでやる必要はありません。